
package Controlador;
import Modelo.Arbitros;
import Modelo.Equipos;
import Modelo.Partidos;
import Modelo.Validaciones;
import Vista.FormGenerarPartidos;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
 *
 * @author Luis
 */
public class ControladorGenerarPartidos implements ActionListener {
    private FormGenerarPartidos formgenerar;
    
    public ControladorGenerarPartidos(){
        super();
        this.formgenerar =new Vista.FormGenerarPartidos();
        this.formgenerar.setLocationRelativeTo(null);
        this.formgenerar.setVisible(true);
        this.formgenerar.AddListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
        if (actionCommand.equals("Generar"))
        {
int CntCondi=0,Clocal,Cvisitante;
String Fecha;
Equipos equipo=new Equipos();
Partidos Resultados=new Partidos();
Partidos Resultados1=new Partidos();



String CodEquipo1,CodEquipo2;
String Local,Visitante;

int MaxEquipos=Equipos.ListaEquipos.size();
MaxEquipos--;

String FecResul="";
int Dias=0;

Arbitros arbitro=new Arbitros();

for (int EquipoViene = 0; EquipoViene<=MaxEquipos-1;EquipoViene++)
  {        
    for (int SigEquipo = EquipoViene + 1; SigEquipo<=MaxEquipos;SigEquipo++)
      {      
        equipo=Equipos.ListaEquipos.get(EquipoViene);  
        CodEquipo1=equipo.getCodigoEquipo()+"-"+equipo.getNombEquipo();

        equipo=Equipos.ListaEquipos.get(SigEquipo);  
        CodEquipo2=equipo.getCodigoEquipo()+"-"+equipo.getNombEquipo();

        CntCondi = 0;
  
        for (int Enfrentamientos = 1;Enfrentamientos<=4;Enfrentamientos++)
          {               
            CntCondi++;
      
            if (CntCondi <= 2)  
               { 
                 Local=CodEquipo1;
                 Visitante=CodEquipo2;
               }  
            else
              {  
                 Local=CodEquipo2;
                 Visitante=CodEquipo1;
              }
                
            do
              {  
                Clocal = Validaciones.Generar_Aleatorio(16); 
                Cvisitante = Validaciones.Generar_Aleatorio(16);
             if (Clocal != Cvisitante)   
                  {  
                     Resultados.setCarrHC(Clocal);
                     Resultados.setCarrVis(Cvisitante); 
                  }
                                       
              }while (Clocal == Cvisitante);
                  
          
             Dias++;
             FecResul=Validaciones.AvanzarFecha(Dias);
             
             int IndiceArbitro=Arbitros.SiguienteArbitro();
             arbitro=Arbitros.ListaArbitros.get(IndiceArbitro);
                     
             Resultados.addPartidos(Dias, FecResul, Local,Visitante,Clocal,Cvisitante,arbitro.GetNombre());

                  
            } //for (int Enfrentamientos
        
      } //for (int SigEquipo
    
    } //for (int EquipoViene

//Generar Fechas
int Fila=1;
int FDelante=0;
int FDetras=Partidos.ListaPartidos.size()-1;
Dias=0;
int IndiceEquipo;



while (FDelante<FDetras)
  {   
    Resultados=Partidos.ListaPartidos.get(FDelante);  
    Resultados1=Partidos.ListaPartidos.get(FDetras);
    
    
    Dias++;
    FecResul=Validaciones.AvanzarFecha(Dias);
     if ("Lunes".equals(Validaciones.DiaSemana(FecResul)))
      {  
        Dias++;
        FecResul=Validaciones.AvanzarFecha(Dias);
      }  
    
    Resultados.setFechaPartido(FecResul);      
    Resultados1.setFechaPartido(FecResul);
    
     
    //Resultados.setUmpirePrincipal("");
    //Resultados1.setUmpirePrincipal("");
    
    Partidos.ListaPartidos.set(FDelante, Resultados);
    Partidos.ListaPartidos.set(FDetras, Resultados1);
    
    Fila++;
    FDelante++;
    FDetras--;
  }    

           formgenerar.btnGenerar();
        }
    else if (actionCommand.equals("Cargar Posiciones"))
    {
           Equipos equipo=new Equipos();
Partidos Juego=new Partidos();
String CodEquipo,CodEquipoPartido,NombEquipo,AnoFund,Ciudad,NombEstadio;
int JJ=0,Jg=0,Jp=0;
int dif;

int IndiceEquipo;
 for (IndiceEquipo=0;IndiceEquipo<Equipos.ListaEquipos.size();IndiceEquipo++ )
{
    equipo=Equipos.ListaEquipos.get(IndiceEquipo);
  
    CodEquipo=equipo.getCodigoEquipo();
    NombEquipo=equipo.getNombEquipo();
    AnoFund=equipo.getAnoFund();
    Ciudad=equipo.getCiudad();
    NombEstadio=equipo.getNombEstadio();
    
  
    JJ=0;
    Jg=0;
    Jp=0;
    for (int IndicePartidos=0;IndicePartidos<Partidos.ListaPartidos.size();IndicePartidos++)
     {
       Juego=Partidos.ListaPartidos.get(IndicePartidos);
       CodEquipoPartido=Juego.getEquipoLocal();
     
       CodEquipoPartido=CodEquipoPartido.substring(0, 2);
     
       if (CodEquipo.equals(CodEquipoPartido))
        {   
          JJ++;
          if (Juego.getCarrHC() > Juego.getCarrVis())
            Jg++;
          else
           Jp++;        
        } if (CodEquipoPartido.equals(CodEquipo))
        {   
          JJ++;
          if (Juego.getCarrHC() > Juego.getCarrVis())
            Jg++;
          else
           Jp++;        
        } 
  
       }         
    
    //Actualizar Tabla Equipos      
    equipo.setJJ(JJ);
    equipo.setJG(Jg);
    equipo.setJP(Jp);
    Equipos.ListaEquipos.set(IndiceEquipo, equipo);
   
    }

 //Ordenar
 int n=Equipos.ListaEquipos.size();
 
Equipos equipoi=new Equipos();
Equipos equipoj=new Equipos();
 Equipos Aux=new Equipos();
 
 for(int i=0;i<n;i++)
   for(int j=i+1;j<=n-1;j++)
    { 
     equipoi=Equipos.ListaEquipos.get(i);
     equipoj=Equipos.ListaEquipos.get(j);
       
      if (equipoi.getJG() < equipoj.getJG())
        {
          Aux=equipoi;
          equipoi=equipoj;
          equipoj=Aux;      
          
          Equipos.ListaEquipos.set(i, equipoi);
          Equipos.ListaEquipos.set(j, equipoj);
        }     
    }  
 


        formgenerar.btnTablaPosiciones(); 
    }else if (actionCommand.equals("VOLVER"))
        formgenerar.dispose();
    }
}
    
